Some form of effective congestion control is needed in the operation of a data network to ensure that data packets will be forwarded to their respective destinations during periods of high demand for network resources. If the congestion control specified for a data network is not effective, then it is likely that data messages could be lost at a network location that is experiencing congestion.
There are several well-known forms of congestion control including rate based and window based controls. In a rate based control, a source transmits data packets at a predetermined rate. The source also monitors a number of well-known parameters and statistics indicative of network congestion including, for example, the round-trip-delay between the source and receiver, the number of packets which do not reach the receiver within a predetermined period of time as noted in acknowledgments that the receiver returns to the source, etc.
In a window based control scheme, the source stops its transmission of data packets to the receiver when it determines in a conventional manner that the number of outstanding, unacknowledged packets set for the transmission window has been reached. (The size of the window is typically based on, for example, the round trip delay between the source and receiver as well as the rate of packet losses.) The source resumes its transmission, keeping the number of outstanding data packets within the size of the window, when it receives an acknowledgment from the receiver. Similarly, the source may adjust the size of the window, and thus the number of outstanding packets that are transmitted during the window, based on different parameters and statistics indicative of network congestion that the source collects.
The foregoing controls work well for unicast transmissions involving a source and a single receiver. Also, the burden of continually accumulating such network parameters and statistics to regulate the transmission rate or the size of window is minimal in a unicast transmission. However, that is not the case for multicast transmissions where a data packet is routed to a large number of receivers based on a particular parameter, e.g., a group address. The reason for this is that a source in a multicast system would have to continually accumulate statistics for each receiver and calculate a rate or window suitable for all of the receivers, which would severely burden the processing and computational time at the source. Thus, performing congestion control in a multicast system involving a very large number of receivers, e.g., >100 receivers, would be a formidable undertaking.